package com.study.designPattern.singleton;

/**
 * Created by HBZ on 2017/5/16.
 */
/*在这一版本的单例模式实现代码中，我们使用了Java的静态内部类。
        这一技术是被JVM明确说明了的，因此不存在任何二义性。
        在这段代码中，因为SingletonClass没有static的属性，因此并不会被初始化。
        直到调用getInstance()的时候，会首先加载SingletonClassInstance类，
        这个类有一个static的SingletonClass实例，因此需要调用SingletonClass的构造方法，
        然后getInstance()将把这个内部类的instance返回给使用者。由于这个instance是static的，
        因此并不会构造多次。*/

public class SingletonClass2 {
    private static class SingletonClassInstance {
        private static final SingletonClass2 instance = new SingletonClass2();
    }

    public static SingletonClass2 getInstance() {
        return SingletonClassInstance.instance;
    }

    private SingletonClass2() {

    }
}
